Data unit based communication is well known. In data unit based communication an information to be transmitted is divided into a plurality of units, and the individual units are sent over a suitable communication network. The structure of given data units and the rules for handling them are given by a protocol in accordance with which the data units are generated and transmitted. A well-known data unit communication protocol is TCP/IP.
Such units for transporting data may carry a variety of names, such as protocol data units, frames, packets, segments, cells etc., depending on the specific context, the specific protocol used and certain other conventions. In the context of the present document, all such units of data shall generically be referred to as data units.
One important aspect in connection with data unit based communication is that of flow control, i.e. the procedure for controlling the release of individual data units from a data unit sender. The task of flow control is to provide a proper and efficient transport of data units from the sender to the intended receiver, without over-burdening the transporting communication network. Namely, the communication network only has limited transportation capabilities, such that the sending of too many data units at once causes congestion in the network, which in turn leads to a delay and/or loss of data units, such that the goal of efficient data unit transportation would not be achieved.
For TCP, RFC 2581 discloses a basic congestion control algorithm that uses the principle of AIMD (Additive Increase Multiplicative Degrees). As is known, TCP uses the well known window-based flow control method in which a “window” of varying length is moved over the data amount to be sent, in order to determine which data units may be sent at what time. One of the windows kept for flow control purposes in TCP is the so-called congestion window (cwnd), which serves to indirectly keep track of the transportation capabilities of the network. Another such window is the so-called advertised window, which the data unit receiver “advertises” to the data unit sender, thereby informing the data unit sender of the receiving capabilities of the data unit receiver. The data unit sender chooses the smaller of these windows, in order to neither over-burden the network nor the receiver.
TCP uses acknowledgement messages (ACKs) as a means of verifying the correct receipt of data units by the data unit receiver. The flow control window expresses the maximum unacknowledged data amount (maximum number of unacknowledged data units) that a data unit sender may have “in flight” at a given time. On the basis of the received acknowledgements or the lack of received acknowledgments, the data unit sender infers the conditions in the transmission network. The mechanism used is that of appropriately adjusting the congestion window and conducting specific window modification algorithms depending on predetermined thresholds.
More specifically, TCP differentiates between a condition referred to as slow-start, which is given if the congestion window is smaller than a threshold called slow-start threshold (ssthresh), or a condition called congestion avoidance if the congestion window is larger than the slow-start threshold.
In accordance with AIMD the congestion window is increased exponentially during slow-start and linearly during congestion-avoidance. Upon detecting congestion, e.g. by detecting or assuming the loss of a data unit, the congestion window is reduced. If the data loss is assumed on the basis of a time-out, the size of the congestion window is reduced to one data unit and the slow-start threshold is reduced to one half its size. If the loss is assumed on the basis of receiving a third duplicate acknowledgment (DUPACK), then the congestion window is reduced to one half its size.
The assumption underlying the above-described model is that routers in the data unit transmission network react to congestion by dropping data units or by having excessive queuing delays. The information conveying mechanism is thereby very indirect. In order to provide a data unit sender with more direct information, network-feedback systems have been proposed, in which network nodes are capable of conveying explicit information to data unit senders. One such concept is the so-called Explicit Congestion Notification (ECN) as outlined in RfC 3168. ECN assumes that network routers employ so-called Active Queue. Management (AQM), in which signs of impending congestion are noticed, and consequently data unit senders are informed by means of explicit notification. This is done by setting a specific field in the header of a data unit being forwarded, where the data unit receiver conveys the set information to the data unit sender in an acknowledgment message. The data unit sender can then take this information into account for its flow control.
In the paper “AntiECN marking: A marking scheme for high bandwidth delay connections” by Srisankar Kunniyur, a proposal has been made for a type of network feedback in which a router in front of an under-utilized high capacity link signals a TCP sender the possibility of aggressively increasing its sending rate. The scenario envisioned by this paper is one in which a TCP connection is not limited by the bandwidth of the links on its route but is limited by its own congestion-avoidance phase. It is suggested to use a single bit, which when set indicates that the router is under-utilised and that the sender can increase its rate aggressively. Similar to ECN, the AntiECN bit is located in the header of each data unit. The initial value is 1. Each router along the data units route checks to see if it can allow an increase in sending rate. If it can, then the router performs an AND operation of the AntiECN bit with 1 and sets the result in the header. If the router is congested or cannot allow an increase in sending rate, it does an AND operation of the AntiECN bit with 0 and sets the result in the header. The receiver echoes the AntiECN bit back to the sender in an ACK. If the echoed AntiECN bit rate is 1, then the data unit sender can increase its congestion window.